package com.jzo2o.market.service;

import com.jzo2o.common.model.PageResult;
import com.jzo2o.market.model.domain.Activity;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.market.model.dto.request.ActivityQueryForPageReqDTO;
import com.jzo2o.market.model.dto.request.ActivitySaveReqDTO;
import com.jzo2o.market.model.dto.response.ActivityInfoResDTO;
import com.jzo2o.market.model.dto.response.SeizeCouponInfoResDTO;

import javax.validation.constraints.Null;
import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author itcast
 * @since 2023-09-16
 */
public interface IActivityService extends IService<Activity> {

    /**
     * 添加优惠券活动
     *
     * @param reqDTO 请求参数
     */
    void saveActivity(ActivitySaveReqDTO reqDTO);
    /**
     * 获取优惠券活动列表
     *
     * @param reqDTO 优惠券活动查询参数
     * @return 优惠券活动列表
     */
    PageResult<ActivityInfoResDTO> pageActivityPage(ActivityQueryForPageReqDTO reqDTO);
    /**
     * 根据活动id查询活动详情
     *
     * @param id 活动id
     * @return 活动详情
     */
    ActivityInfoResDTO getByActivityId(Long id);
    /**
     * 撤销活动
     *
     * @param id 活动id
     */
    void revokeActivity(Long id);
    /**
     * 更新活动库存
     *
     * @param id 活动id
     * @param i  库存数量
     * @return 更新结果
     */
    int updateActivityStock(@Null(message = "请求失败") Long id, int i);

    /**
     * 从缓存获取优惠券信息
     * @param id
     * @return
     */
    Activity queryActivityFromCacheById(Long id);
}
